package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 *包位置:java.io
 * File	表示 文件或者文件夹【存在硬盘]
 * 测试:io包下创建文件demo.txt
 * 验证项目下是否存在demo.txt文件
 * 创建File文件夹
 * File file=new File("传入路径")
 * 构造器：传入路径 /  \表示路径
 *               /  表示路径、文件下载【下载到本地】---本地测试
 *               \表示路径、文件的上传【上传到服务器】---网络
 *File文件
 *
 *
 */
public class FileAPI {
@Test
        public void testFile(){
        //项目结构：C/S架构---Maven---查路径--通过idea查路径
        //找到需要查找文件/文件夹--右键---打开于--Explorer
        //src\main\java\com\tedu\api\io char c='\\' 转义成路径:\
        //便携java代码--任何操作平台运行--路径--封装：静态属性
        //Java编写
        File file=new File("src"+File.separator+"mai" +
                "n"+File.separator+"java"+File.separator+"com" +
                ""+File.separator+"te" +
                "du"+File.separator+"api"+File.separator+"io"+File.separator+"demo.txt");
        //验证：demo.txt是否存在
        boolean b=file.exists();
        System.out.println("demo.txt是否存在:"+b);
}
        /**针对文件操作方法
         * getName()      返回值：String
         * 获取文件/文件夹的名字【注意：不管file是否存在，只会拿名】
         * length()     返回值：long
         * 返回当前文件的大小（字节量）--汉字:3个字节量
         * exists()	返回值 boolean
         * 判断file文件是否存在，存在true,反之
         */
        @Test
        public void testGLE(){
                File file=new File("src"+File.separator+"mai" +
                        "n"+File.separator+"java"+File.separator+"com" +
                        ""+File.separator+"te" +
                        "du"+File.separator+"api"+File.separator+"io"+File.separator+"demo.txt");
                String str=file.getName();
                System.out.println("file文件名字是："+str);
                long length=file.length();
                System.out.println("file文件字节量是："+length);
        }
        /**操作文件或者文件夹(创建、删除)
         *创建新文件，创建不成功，如果不成功抛出IO流异常
         */
        @Test
        public void testCreateNewFile() throws IOException {
//需求:用程序创建一个文件:text.txt
                File file=new File("."+File.separator+"demo.txt");
        //创建text.txt---判断当前文件夹下是否存在，存在--不创建
                                            //不存在--创建
                if (!file.exists()){//text.txt文件不存在

                //创建文件
                System.out.println("文件是不存在");
                 file.createNewFile();
                        System.out.println("文件创建完毕~");
                }else{
                        System.out.println("文件存在，别创建~");
                }
                }
        /**
         * 拓展：存放文件位置：Maven项目：main 程序入口
         *                           test 程序测试
         *      查找：main下或test下，必须从src位置开始找
         *      -----------------
         *      .代表当前项目下
         *
          */
        @Test
        public void testPath() throws IOException {
        //"FileAPI.java"相对于项目名"API"下
        File file=new File("."+File.separator+"1");

        //查看file路径
        //System.out.println(file.getCanonicalFile());
                System.out.println("API项目路径下文件是否存在"+file.exists());
        }
        /**
         * 文件删除操作
         * delete()
         * 删除以创建完毕文件/文件夹
         */
        @Test
        public void testDelete(){
         //创建File--找到text.txt文件
        File file=new File("."+File.separator+"text.txt");
       //删除  有文件 删除  没有文件  不删
       if (file.exists()) {
               System.out.println("有文件");
               file.delete();
               System.out.println("文件删除成功~");
       }else {
               System.out.println("文件没有，别删啦");
       }

        }
        /**
         * mkdir()
         * 在当前项目下创建一个【目录：文件夹】
         * mkdirs()
         * 创建多层【目录：文件夹】
         * 作业：删除demo下所有文件
         */
        @Test
        public void testMkdir(){
                //创建文件夹--创建在api文件夹下demo文件夹-->abc文件夹--bcd文件夹
                File file=new File("."+File.separator+"demo"+
                ""+File.separator+"abc"+File.separator+"bcd");
                //创建文件夹---如果没有文件夹  创建|有   不创建
            if (!file.exists()) {
                System.out.println("没有文件");
                //file.mkdir();创建一个文件夹
                file.mkdirs(); //创建多层文件夹
                System.out.println("创建成功~");
            }else {
                System.out.println("已经存在，别创建啦");
            }

        }
        /**
         * isDirectory() 判断是否是【目录：文件夹】，返回：true
         * isFile()      判断是否是文件 返回true
         * listFiles()  返回值：数组---File[]
         * 获取当前目录下所有的子项【包含：文件、文件夹】
         */
        @Test
    public void testListFiles(){
    //需求：获取当前文件夹下所有的文件、文件夹
            File file=new File(".");
            //只获取 文件夹
            if (file.isDirectory()){
            //获取文件夹--子项
            File[] files=file.listFiles();
            //打印获取到的文件夹名字
            for (int i=0;i<files.length;i++){
                System.out.println(files[i]);
            }
            }
        }
        @Test
    public void test(){
            String str="我是小白";
            boolean b=str.startsWith("喔");
            System.out.println("b");

        }
}

